*/
const char *
-Get_Pkt_Type(unsigned char p)
+Get_Pkt_Type(unsigned char p, unsigned char d0, const char **xinfo)
{
+ *xinfo = NULL;
#define LT LINK_ID[gps_link_type]
if (p == LT.Pid_Ack_Byte)
return "ACK";
- if (p == LT.Pid_Command_Data)
+ if (p == LT.Pid_Command_Data) {
+ switch (d0) {
+ case 0: *xinfo = "Abort"; break;
+ case 1: *xinfo = "Xfer Alm"; break;
+ case 2: *xinfo = "Xfer Posn"; break;
+ case 3: *xinfo = "Xfer Prx"; break;
+ case 4: *xinfo = "Xfer Rte"; break;
+ case 5: *xinfo = "Xfer Time"; break;
+ case 6: *xinfo = "Xfer Trk"; break;
+ case 7: *xinfo = "Xfer Wpt"; break;
+ case 8: *xinfo = "Power Down"; break;
+ case 49: *xinfo = "Xfer PVT Start"; break;
+ case 50: *xinfo = "Xfer PVT Stop"; break;
+ case 92: *xinfo = "Flight Records"; break;
+ case 117: *xinfo = "Xfer Laps"; break;
+ default: *xinfo = "Unknown";
+ }
return "CMDDAT";
+ }
if (p == LT.Pid_Xfer_Cmplt)
return "XFRCMP";
if (p == LT.Pid_Date_Time_Data)
int32 GPS_A800_Get(int32 *fd, GPS_PPvt_Data *packet);
void GPS_D800_Get(GPS_PPacket packet, GPS_PPvt_Data *pvt);
+const char * Get_Pkt_Type(unsigned char p, unsigned char d0, const char **xinfo);
#endif
UC *p;
int32 i;
UC chk=0;
+ const char *m1;
+ const char *m2;
len = 0;
isDLE = gpsFalse;
p = (*packet)->data;
start = GPS_Time_Now();
- GPS_Diag("\nRx Data:");
+ GPS_Diag("Rx Data:");
while(GPS_Time_Now() < start+GPS_TIME_OUT)
{
if((n=GPS_Serial_Chars_Ready(fd)))
return 0;
}
+ m1 = Get_Pkt_Type((*packet)->type, (*packet)->data[0], &m2);
+ GPS_Diag("(%-8s%s)\n", m1, m2 ? m2 : "");
return (*packet)->n;
}
int32 GPS_Write_Packet(int32 fd, GPS_PPacket packet)
{
size_t ret;
+ const char *m1, *m2;
GPS_Diag("Tx Data:");
Diag(&packet->dle, 3);
GPS_Diag(": ");
DiagS(packet->data, packet->bytes);
DiagS(&packet->chk, 3);
- GPS_Diag("(%-8s)\n", Get_Pkt_Type(packet->type));
+ m1 = Get_Pkt_Type(packet->type, packet->data[0], &m2);
+ GPS_Diag("(%-8s%s)\n", m1, m2 ? m2 : "");
if((ret=GPS_Serial_Write(fd,(const void *)&packet->chk,(size_t)3)) == -1)
{